import { isvalidatemobile, cardid, validateEmail, validateURL, validatenum, validatenumord, validatenull } from './validate.js';

// 判断是否是数值
export const checkFloatOrNumber = (rule, value, callback) => {
  if (/^[-\+]?\d+$/.test(value) || /^[-\+]?\d+(\.\d+)?$/.test(value)) {
    callback()
  } else {
    callback(
      new Error('匹配数值类型，包括整数和浮点数!')
    )
  }
}

// 判断是否是手机号
export const checkPhone = (rule, value, callback) => {
  let res = isvalidatemobile(value)
  if (res[0]) {
    callback(new Error(res[1]))
  } else {
    callback()
  }
}

// 判断是否是身份证号
export const checkCardId = (rule, value, callback) => {
  let res = cardid(value)
  if (res.result) {
    callback(new Error(res.msg))
  } else {
    callback()
  }
}

// 判断是否是邮箱
export const checkEmail = (rule, value, callback) => {
  let res = validateEmail(value)
  if (res) {
    callback()
  } else {
    callback(new Error('邮件格式不正确'))
  }
}

// 判断是否只是英文字母和数字
export const checkEnNumber = (rule, value, callback) => {
  let res = /^[0-9a-zA-Z]*$/.test(value)
  if (res) {
    callback()
  } else {
    callback(new Error('必须是英文字母或者数字'))
  }
}

// 判断是否是汉字
export const checkZh = (rule, value, callback) => {
  let res = /^[\u0391-\uFFE5]+$/.test(value)
  if (res) {
    callback()
  } else {
    callback(new Error('必须是中文'))
  }
}

// 判断是否是url地址
export const checkUrl = (rule, value, callback) => {
  let res = validateURL(value)
  if (res) {
    callback()
  } else {
    callback(new Error('URL不合法'))
  }
}

// 判断是否是QQ号码
export const checkQQ = (rule, value, callback) => {
  let res = /^[1-9][0-9]{4,10}$/.test(value)
  if (res) {
    callback()
  } else {
    callback(new Error('QQ号码不正确'))
  }
}

// 判断是否是微信号
export const checkWeChat = (rule, value, callback) => {
  let res = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(value)
  if (res) {
    callback()
  } else {
    callback(new Error('微信号不正确'))
  }
}

// 判断是否是车牌号
export const checkPattern = (rule, value, callback) => {
  let res = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/.test(value)
  if (res) {
    callback()
  } else {
    callback(new Error('车牌号不合法'))
  }
}

// 判断是否是整数
export const checkInteger = (rule, value, callback) => {
  let res = validatenum(value, 2)
  if (res) {
    callback(new Error('必须是整数'))
  } else {    
    callback()
  }
}

// 判断是否是小数
export const checkDecimal = (rule, value, callback) => {
  let res = validatenumord(value, 1)
  if (res) {
    callback(new Error('必须是小数'))
  } else {
    callback()
  }
}

// 判断是否为空
export const checkNull = (rule, value, callback) => {
  let res = validatenull(value)
  if (res) {
    callback(new Error('不能为空'))
  } else {
    callback()
  }
}
